#include <iostream>
using namespace std;
typedef long long ll;
const int N = 1e7 + 10, mod = 1e9 + 7;
int dp[N][3];

// dp[i][0] 表示第i列只有第一行放了
// dp[i][1] 表示第i列只有第二行放了
// dp[i][2] 表示第i列两行都放了都放了

int main()
{
    dp[0][2] = 1; //
    dp[1][2] = 1; // 第一列只有一种放法，竖着放
    int n;
    cin >> n;
    for(int i = 2; i <= n; ++i)
    {
        dp[i][0] = ((ll)dp[i - 1][1] + dp[i - 2][2]) % mod;
        dp[i][1] = ((ll)dp[i - 1][0] + dp[i - 2][2]) % mod;
        dp[i][2] = ((ll)dp[i - 1][2] + dp[i - 1][0] + dp[i - 1][1] + dp[i - 2][2]) % mod;
    }
    cout << dp[n][2];
    return 0;
}